defmodule EliPhxPlay.Repo.Migrations.CreateGroups do
  use Ecto.Migration

  def change do
    # 创建群聊表，存储群聊基础信息
    create table(:groups, primary_key: false) do
      # 群聊唯一标识符，使用UUID格式
      add :group_id, :binary_id, primary_key: true, comment: "群聊唯一标识符"

      # 群聊显示名称，必填
      add :group_name, :string, null: false, comment: "群聊显示名称"

      # 群聊描述信息，可选，支持长文本
      add :group_description, :text, comment: "群聊描述信息"

      # 群聊头像图片链接，可选
      add :group_avatar, :string, comment: "群聊头像图片链接"

      # 群主用户ID，外键关联users表，限制删除
      add :owner_id, references(:users, column: :user_id, type: :binary_id, on_delete: :nilify_all),comment: "群主用户ID - 群主删除后设为NULL"

      # 自动添加创建时间和更新时间
      timestamps()
    end

    # 为群主ID创建索引，提高查询群主所拥有的群聊效率
    create index(:groups, [:owner_id], comment: "群主查询索引")

    # 为群名称创建索引，提高群聊搜索效率
    create index(:groups, [:group_name], comment: "群名称搜索索引")
  end
end
